<?php
require_once("../../utils/tools.php");
class Security
{/* 安全验证相关 */
    public static function verify_login($_conn)
    { // 登录验证
        $token = Security::get_requst_token();
        $is_login  = Security::get_exist_token($_conn, $token);
        if (!(isset($token) && $is_login)) {
            Security::interceptor();
        }
        /* 记录请求时间 */
        Security::add_req_time($_conn, $token);
    }
    public static function verify_role_id($_conn, $_role_id = 0) //指定role_id放行
    { // 登录验证
        $token = Security::get_requst_token();
        $is_login  = SQLTools::existTB($_conn, "users", "token='$token' AND role=$_role_id");
        if (!(isset($token) && $is_login)) {
            Security::interceptor('1001', '你没权限访问');
        }
        /* 记录请求时间 */
        Security::add_req_time($_conn, $token);
    }
    public static function interceptor($code = '1000', $msg = "需要登录!")
    {
        die(json_encode(array("code" => $code, "msg" => $msg))); //拦截请求
    }
    public static function get_requst_token()
    {
        $headers = get_request_headers();
        return isset($headers["Token"]) ? $headers["Token"] : null; // 请求头的自动大写开头？？
    }
    public static function get_exist_token($_conn, $_token)
    { // 验证 token 是否存在
        return SQLTools::existTB($_conn, "users", "token='$_token'");
    }
    public static function add_req_time($_conn, $_token)
    { // 记录访问时间
        SQLTools::updateTB($_conn, "users", "req_time=CURRENT_TIMESTAMP", "token='$_token'");
    }
}
